home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / PhonePanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  33KB  |  1,230 lines

  1. /*
  2. **    $Id: PhonePanel.c,v 1.6 92/04/21 16:59:22 olsen Sta Locker: olsen $
  3. **    $Revision: 1.6 $
  4. **    $Date: 92/04/21 16:59:22 $
  5. **
  6. **    The phonebook and support routines
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_PHONENUMBER,GAD_EDIT,GAD_NAME,GAD_NAMELIST,GAD_PLAYNUMBER,
  15.         GAD_CLEARLIST,GAD_NEWENTRY,GAD_REMOVEENTRY,GAD_LOADLIST,
  16.         GAD_SAVELIST,GAD_SORTLIST,GAD_CLONEENTRY,GAD_DIALLIST,GAD_PASSWORD };
  17.  
  18. enum    {    EDIT_SERIAL,EDIT_MODEM,EDIT_TRANSFER,EDIT_SCREEN,EDIT_TERMINAL,
  19.         EDIT_COMMANDS,EDIT_UNITS,EDIT_MISC,EDIT_PATHS,EDIT_KEYMACROS,
  20.         EDIT_FASTMACROS,EDIT_PASSWORD,EDIT_COPY };
  21.  
  22. #define WIDTH    630
  23. #define HEIGHT    171
  24.  
  25. STATIC struct List    EditList;
  26. STATIC struct Node    EditNode[13];
  27.  
  28. STATIC UBYTE *EditName[13] =
  29. {
  30.     NULL,
  31.     NULL,
  32.     NULL,
  33.     NULL,
  34.     NULL,
  35.     NULL,
  36.     NULL,
  37.     NULL,
  38.     NULL,
  39.     NULL,
  40.     NULL,
  41.     NULL,
  42.     NULL
  43. };
  44.  
  45. STATIC struct Gadget *
  46. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  47. {
  48.     struct Gadget        *Gadget;
  49.     struct NewGadget     NewGadget;
  50.     UWORD             Counter = 0;
  51.  
  52.     LocalizeString(EditName,MSG_PHONEPANEL_SERIAL_TXT,MSG_PHONEPANEL_COPY_CONFIG_TXT);
  53.  
  54.     memset(&NewGadget,0,sizeof(struct NewGadget));
  55.  
  56.     if(Gadget = CreateContext(GadgetList))
  57.     {
  58.         WORD i;
  59.  
  60.         NewList(&EditList);
  61.  
  62.         for(i = 0 ; i < 13 ; i++)
  63.         {
  64.             EditNode[i] . ln_Name = EditName[i];
  65.  
  66.             AddTail(&EditList,&EditNode[i]);
  67.         }
  68.  
  69.         NewGadget . ng_LeftEdge        = 114;
  70.         NewGadget . ng_TopEdge        = 103;
  71.         NewGadget . ng_Width        = 337;
  72.         NewGadget . ng_Height        = 14;
  73.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_PHONE_NUMBER_GAD);
  74.         NewGadget . ng_TextAttr        = &DefaultFont;
  75.         NewGadget . ng_GadgetID        = Counter;
  76.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  77.         NewGadget . ng_VisualInfo    = VisualInfo;
  78.  
  79.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  80.             GTST_MaxChars,    49,
  81.             GTST_EditHook,    &CommandHook,
  82.             GA_Disabled,    TRUE,
  83.             GA_Immediate,    TRUE,
  84.         TAG_DONE);
  85.  
  86.         NewGadget . ng_LeftEdge        = 453;
  87.         NewGadget . ng_TopEdge        = 12;
  88.         NewGadget . ng_Width        = 171;
  89.         NewGadget . ng_Height        = 158 - 17;
  90.         NewGadget . ng_GadgetText    = NULL;
  91.         NewGadget . ng_GadgetID        = Counter;
  92.         NewGadget . ng_Flags        = 0;
  93.  
  94.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  95.             GTLV_Labels,    &EditList,
  96.         TAG_DONE);
  97.  
  98.         NewGadget . ng_Width        = 337;
  99.         NewGadget . ng_Height        = 14;
  100.         NewGadget . ng_LeftEdge        = 114;
  101.         NewGadget . ng_TopEdge        = 88;
  102.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_BBS_NAME_GAD);
  103.         NewGadget . ng_GadgetID        = Counter;
  104.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  105.  
  106.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  107.             GTST_MaxChars,    29,
  108.             GTST_EditHook,    &CommandHook,
  109.             GA_Disabled,    TRUE,
  110.             GA_Immediate,    TRUE,
  111.         TAG_DONE);
  112.  
  113.         NewGadget . ng_LeftEdge        = 114;
  114.         NewGadget . ng_TopEdge        = 12;
  115.         NewGadget . ng_Height        = 77;
  116.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_NAME_LIST_GAD);
  117.         NewGadget . ng_GadgetID        = Counter;
  118.  
  119.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  120.             GT_Underscore,    '_',
  121.         TAG_DONE);
  122.  
  123.         NewGadget . ng_LeftEdge        = 227;
  124.         NewGadget . ng_TopEdge        = 152;
  125.         NewGadget . ng_Width        = 111;
  126.         NewGadget . ng_Height        = 16;
  127.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_PLAY_NUMBER_GAD);
  128.         NewGadget . ng_GadgetID        = Counter;
  129.         NewGadget . ng_Flags        = PLACETEXT_IN;
  130.  
  131.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  132.             GT_Underscore,    '_',
  133.             GA_Disabled,    TRUE,
  134.         TAG_DONE);
  135.  
  136.         NewGadget . ng_TopEdge        = 135;
  137.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_CLEAR_LIST_GAD);
  138.         NewGadget . ng_GadgetID        = Counter;
  139.  
  140.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  141.             GT_Underscore,    '_',
  142.             GA_Disabled,    TRUE,
  143.         TAG_DONE);
  144.  
  145.         NewGadget . ng_LeftEdge        = 114;
  146.         NewGadget . ng_TopEdge        = 118;
  147.         NewGadget . ng_Width        = 106;
  148.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_NEW_ENTRY_GAD);
  149.         NewGadget . ng_GadgetID        = Counter;
  150.  
  151.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  152.             GT_Underscore,    '_',
  153.         TAG_DONE);
  154.  
  155.         NewGadget . ng_TopEdge        = 152;
  156.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_REMOVE_ENTRY_GAD);
  157.         NewGadget . ng_GadgetID        = Counter;
  158.  
  159.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  160.             GT_Underscore,    '_',
  161.             GA_Disabled,    TRUE,
  162.         TAG_DONE);
  163.  
  164.         NewGadget . ng_LeftEdge        = 345;
  165.         NewGadget . ng_TopEdge        = 118;
  166.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_LOAD_LIST_GAD);
  167.         NewGadget . ng_GadgetID        = Counter;
  168.  
  169.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  170.             GT_Underscore,    '_',
  171.         TAG_DONE);
  172.  
  173.         NewGadget . ng_TopEdge        = 152;
  174.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_SAVE_LIST_GAD);
  175.         NewGadget . ng_GadgetID        = Counter;
  176.  
  177.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  178.             GT_Underscore,    '_',
  179.             GA_Disabled,    TRUE,
  180.         TAG_DONE);
  181.  
  182.         NewGadget . ng_TopEdge        = 135;
  183.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_SORT_LIST_GAD);
  184.         NewGadget . ng_GadgetID        = Counter;
  185.  
  186.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  187.             GT_Underscore,    '_',
  188.             GA_Disabled,    TRUE,
  189.         TAG_DONE);
  190.  
  191.         NewGadget . ng_LeftEdge        = 114;
  192.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_CLONE_ENTRY_GAD);
  193.         NewGadget . ng_GadgetID        = Counter;
  194.  
  195.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  196.             GT_Underscore,    '_',
  197.             GA_Disabled,    TRUE,
  198.         TAG_DONE);
  199.  
  200.         NewGadget . ng_LeftEdge        = 227;
  201.         NewGadget . ng_TopEdge        = 118;
  202.         NewGadget . ng_Width        = 111;
  203.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_DIAL_LIST_GAD);
  204.         NewGadget . ng_GadgetID        = Counter;
  205.  
  206.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  207.             GT_Underscore,    '_',
  208.             GA_Disabled,    TRUE,
  209.         TAG_DONE);
  210.  
  211.         NewGadget . ng_Width        = 171;
  212.         NewGadget . ng_Height        = 16;
  213.         NewGadget . ng_LeftEdge        = 453;
  214.         NewGadget . ng_TopEdge        = 11 + 158 - 17;
  215.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_SET_PASSWORT_GAD);
  216.         NewGadget . ng_GadgetID        = Counter;
  217.         NewGadget . ng_Flags        = 0;
  218.  
  219.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  220.             GT_Underscore,    '_',
  221.             GA_Disabled,    TRUE,
  222.         TAG_DONE);
  223.     }
  224.  
  225.     return(Gadget);
  226. }
  227.  
  228. BYTE
  229. PhonePanel()
  230. {
  231.     STATIC WORD     OffsetX = -1,OffsetY = -1;
  232.  
  233.     struct Window    *PanelWindow;
  234.     struct Gadget    *GadgetList = NULL;
  235.     struct Gadget    *GadgetArray[GAD_PASSWORD + 1];
  236.  
  237.     ULONG         Sec1,Mic1,Sec2,Mic2;
  238.     LONG         HitItem = -1;
  239.  
  240.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  241.     {
  242.         if(OffsetX == -1)
  243.             OffsetX = (Screen -> Width - WIDTH) >> 1;
  244.  
  245.         if(OffsetY == -1)
  246.             OffsetY = (Screen -> Height - HEIGHT) >> 1;
  247.  
  248.         if(PanelWindow = OpenWindowTags(NULL,
  249.             WA_Left,    OffsetX,
  250.             WA_Top,        OffsetY,
  251.             WA_Width,    WIDTH,
  252.             WA_Height,    HEIGHT,
  253.  
  254.             WA_Activate,    TRUE,
  255.             WA_DragBar,    TRUE,
  256.             WA_DepthGadget,    TRUE,
  257.             WA_RMBTrap,    TRUE,
  258.             WA_DepthGadget,    TRUE,
  259.             WA_CloseGadget,    TRUE,
  260.             WA_CustomScreen,Screen,
  261.  
  262.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | STRINGIDCMP | BUTTONIDCMP | LISTVIEWIDCMP,
  263.  
  264.             WA_Title,    LocaleString(MSG_PHONEPANEL_PHONEBOOK_TXT),
  265.         TAG_DONE))
  266.         {
  267.             struct IntuiMessage    *Massage;
  268.             ULONG             Class,Code;
  269.             struct Gadget        *Gadget;
  270.             BYTE             Terminated = FALSE;
  271.  
  272.             UBYTE             DummyBuffer[256],*DummyChar;
  273.  
  274.             LONG             Selected = ~0,
  275.                          Count = -1,i;
  276.             struct List        *PhoneList = NULL;
  277.             struct PhoneNode    *TempNode;
  278.  
  279.             struct FileRequest    *FileRequest;
  280.  
  281.             PushWindow(PanelWindow);
  282.  
  283.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  284.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  285.             GT_RefreshWindow(PanelWindow,NULL);
  286.  
  287.             if(Phonebook && NumPhoneEntries)
  288.             {
  289.                 if(PhoneList = CreatePhoneList())
  290.                 {
  291.                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  292.                         GTLV_Labels,PhoneList,
  293.                     TAG_DONE);
  294.  
  295.                     if(PhoneList -> lh_Head -> ln_Succ)
  296.                     {
  297.                         GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  298.                             GA_Disabled,    FALSE,
  299.                         TAG_DONE);
  300.  
  301.                         GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  302.                             GA_Disabled,    FALSE,
  303.                         TAG_DONE);
  304.  
  305.                         if(PhoneList -> lh_Head -> ln_Succ -> ln_Succ)
  306.                         {
  307.                             GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  308.                                 GA_Disabled,    FALSE,
  309.                             TAG_DONE);
  310.                         }
  311.                     }
  312.                 }
  313.             }
  314.  
  315.             ActiveGadget = NULL;
  316.  
  317.             FreeDialList();
  318.  
  319.             for(i = 0 ; i < NumPhoneEntries ; i++)
  320.             {
  321.                 if(Phonebook[i] -> Count > Count)
  322.                     Count = Phonebook[i] -> Count;
  323.             }
  324.  
  325.             Count++;
  326.  
  327.             if(Count)
  328.             {
  329.                 GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  330.                     GA_Disabled,    FALSE,
  331.                 TAG_DONE);
  332.  
  333.                 GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  334.                     GA_Disabled,    FALSE,
  335.                 TAG_DONE);
  336.             }
  337.  
  338.             while(!Terminated)
  339.             {
  340.                 WaitPort(PanelWindow -> UserPort);
  341.  
  342.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  343.                 {
  344.                     Class    = Massage -> Class;
  345.                     Code    = Massage -> Code;
  346.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  347.  
  348.                     GT_ReplyIMsg(Massage);
  349.  
  350.                     if(Class == IDCMP_VANILLAKEY)
  351.                     {
  352.                         switch(Code)
  353.                         {
  354.                             case ' ':    if(Selected != -1)
  355.                                     {
  356.                                         HitItem = -1;
  357.  
  358.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  359.                                             GTLV_Labels,    ~0,
  360.                                         TAG_DONE);
  361.  
  362.                                         if(Phonebook[Selected] -> Count == -1)
  363.                                         {
  364.                                             if(!Count)
  365.                                             {
  366.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  367.                                                     GA_Disabled,    FALSE,
  368.                                                 TAG_DONE);
  369.  
  370.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  371.                                                     GA_Disabled,    FALSE,
  372.                                                 TAG_DONE);
  373.                                             }
  374.  
  375.                                             Phonebook[Selected] -> Count = Count++;
  376.  
  377.                                             SPrintf(Phonebook[Selected] -> Node -> LocalName,"%3ld - %s",Count,Phonebook[Selected] -> Name);
  378.                                         }
  379.                                         else
  380.                                         {
  381.                                             RemoveDialEntry(Selected);
  382.  
  383.                                             if(!(--Count))
  384.                                             {
  385.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  386.                                                     GA_Disabled,    TRUE,
  387.                                                 TAG_DONE);
  388.  
  389.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  390.                                                     GA_Disabled,    TRUE,
  391.                                                 TAG_DONE);
  392.                                             }
  393.                                         }
  394.  
  395.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  396.                                             GTLV_Labels,    PhoneList,
  397.                                         TAG_DONE);
  398.                                     }
  399.  
  400.                                     break;
  401.  
  402.                             default:        KeySelect(GadgetArray,GAD_PASSWORD,Code,PanelWindow,&Gadget,&Class,&Code);
  403.                                     break;
  404.                         }
  405.                                         }
  406.  
  407.                     if(Class == IDCMP_GADGETDOWN)
  408.                     {
  409.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  410.                             ActiveGadget = Gadget;
  411.                     }
  412.  
  413.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  414.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  415.  
  416.                     if(Class == IDCMP_CLOSEWINDOW)
  417.                     {
  418.                         FreeDialList();
  419.  
  420.                         Terminated = TRUE;
  421.                     }
  422.  
  423.                     if(Class == IDCMP_GADGETUP)
  424.                     {
  425.                         switch(Gadget -> GadgetID)
  426.                         {
  427.                             case GAD_NAMELIST:
  428.  
  429.                                     if(HitItem != Code)
  430.                                     {
  431.                                         HitItem = Code;
  432.  
  433.                                         CurrentTime(&Sec1,&Mic1);
  434.  
  435.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  436.                                             GTST_String,    Phonebook[Code] -> Name,
  437.                                             GA_Disabled,    FALSE,
  438.                                         TAG_DONE);
  439.  
  440.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  441.                                             GTST_String,    Phonebook[Code] -> Number,
  442.                                             GA_Disabled,    FALSE,
  443.                                         TAG_DONE);
  444.  
  445.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  446.                                             GA_Disabled,    FALSE,
  447.                                         TAG_DONE);
  448.  
  449.                                         GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  450.                                             GA_Disabled,    FALSE,
  451.                                         TAG_DONE);
  452.  
  453.                                         GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  454.                                             GA_Disabled,    FALSE,
  455.                                         TAG_DONE);
  456.  
  457.                                         Selected = Code;
  458.                                     }
  459.                                     else
  460.                                     {
  461.                                         CurrentTime(&Sec2,&Mic2);
  462.  
  463.                                         if(DoubleClick(Sec1,Mic1,Sec2,Mic2))
  464.                                         {
  465.                                             HitItem = -1;
  466.  
  467.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  468.                                                 GTLV_Labels,    ~0,
  469.                                             TAG_DONE);
  470.  
  471.                                             if(Phonebook[Selected] -> Count == -1)
  472.                                             {
  473.                                                 if(!Count)
  474.                                                 {
  475.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  476.                                                         GA_Disabled,    FALSE,
  477.                                                     TAG_DONE);
  478.  
  479.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  480.                                                         GA_Disabled,    FALSE,
  481.                                                     TAG_DONE);
  482.                                                 }
  483.  
  484.                                                 Phonebook[Selected] -> Count = Count++;
  485.  
  486.                                                 SPrintf(Phonebook[Selected] -> Node -> LocalName,"%3ld - %s",Count,Phonebook[Selected] -> Name);
  487.                                             }
  488.                                             else
  489.                                             {
  490.                                                 RemoveDialEntry(Selected);
  491.  
  492.                                                 if(!(--Count))
  493.                                                 {
  494.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  495.                                                         GA_Disabled,    TRUE,
  496.                                                     TAG_DONE);
  497.  
  498.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  499.                                                         GA_Disabled,    TRUE,
  500.                                                     TAG_DONE);
  501.                                                 }
  502.                                             }
  503.  
  504.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  505.                                                 GTLV_Labels,    PhoneList,
  506.                                             TAG_DONE);
  507.                                         }
  508.  
  509.                                         Sec1 = Sec2;
  510.                                         Mic1 = Mic2;
  511.                                     }
  512.  
  513.                                     break;
  514.  
  515.                             case GAD_CLEARLIST:
  516.  
  517.                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  518.                                         GTLV_Labels,    ~0,
  519.                                     TAG_DONE);
  520.  
  521.                                     Count = 0;
  522.  
  523.                                     for(i = 0 ; i < NumPhoneEntries ; i++)
  524.                                     {
  525.                                         SPrintf(Phonebook[i] -> Node -> LocalName,"      %s",Phonebook[i] -> Name);
  526.  
  527.                                         Phonebook[i] -> Count = -1;
  528.                                     }
  529.  
  530.                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  531.                                         GTLV_Labels,    PhoneList,
  532.                                     TAG_DONE);
  533.  
  534.                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  535.                                         GA_Disabled,    TRUE,
  536.                                     TAG_DONE);
  537.  
  538.                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  539.                                         GA_Disabled,    TRUE,
  540.                                     TAG_DONE);
  541.  
  542.                                     break;
  543.  
  544.                             case GAD_PLAYNUMBER:
  545.  
  546.                                     if(Selected != ~0)
  547.                                     {
  548.                                         UBYTE *String = Phonebook[Selected] -> Number;
  549.  
  550.                                         ExtractString(String,DummyBuffer,FALSE);
  551.  
  552.                                         BlockWindow(PanelWindow);
  553.  
  554.                                         if(!ToneDial(DummyBuffer))
  555.                                             MyEasyRequest(NULL,LocaleString(MSG_GLOBAL_TERM_HAS_A_PROBLEM_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),LocaleString(MSG_GLOBAL_FAILED_TO_ALLOCATE_RESOURCES_FOR_PLAYING_TXT));
  556.  
  557.                                         ReleaseWindow(PanelWindow);
  558.                                     }
  559.  
  560.                                     break;
  561.  
  562.                             case GAD_NEWENTRY:
  563.  
  564.                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  565.                                         GTLV_Labels,    ~0,
  566.                                     TAG_DONE);
  567.  
  568.                                     if(PhoneList)
  569.                                     {
  570.                                         DeletePhoneList(PhoneList);
  571.  
  572.                                         PhoneList = NULL;
  573.                                     }
  574.  
  575.                                     if(NewPhoneEntry())
  576.                                     {
  577.                                         if(PhoneList = CreatePhoneList())
  578.                                         {
  579.                                             Selected = NumPhoneEntries - 1;
  580.  
  581.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  582.                                                 GTLV_Labels,    PhoneList,
  583.                                                 GTLV_Selected,    Selected,
  584.                                             TAG_DONE);
  585.  
  586.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  587.                                                 GTST_String,    Phonebook[Selected] -> Name,
  588.                                                 GA_Disabled,    FALSE,
  589.                                             TAG_DONE);
  590.  
  591.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  592.                                                 GTST_String,    Phonebook[Selected] -> Number,
  593.                                                 GA_Disabled,    FALSE,
  594.                                             TAG_DONE);
  595.  
  596.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  597.                                                 GA_Disabled,    FALSE,
  598.                                             TAG_DONE);
  599.  
  600.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  601.                                                 GA_Disabled,    FALSE,
  602.                                             TAG_DONE);
  603.  
  604.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  605.                                                 GA_Disabled,    FALSE,
  606.                                             TAG_DONE);
  607.  
  608.                                             if(NumPhoneEntries == 1)
  609.                                             {
  610.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  611.                                                     GA_Disabled,    FALSE,
  612.                                                 TAG_DONE);
  613.  
  614.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  615.                                                     GA_Disabled,    FALSE,
  616.                                                 TAG_DONE);
  617.                                             }
  618.  
  619.                                             if(NumPhoneEntries == 2)
  620.                                             {
  621.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  622.                                                     GA_Disabled,    FALSE,
  623.                                                 TAG_DONE);
  624.                                             }
  625.  
  626.                                             ActivateGadget(GadgetArray[GAD_NAME],PanelWindow,NULL);
  627.  
  628.                                             ActiveGadget = GadgetArray[GAD_NAME];
  629.                                         }
  630.                                         else
  631.                                             goto ClearList;
  632.                                     }
  633.                                     else
  634.                                         goto ClearList;
  635.  
  636.                                     break;
  637.  
  638.                             case GAD_CLONEENTRY:
  639.  
  640.                                     if(Selected != ~0)
  641.                                     {
  642.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  643.                                             GTLV_Labels,    ~0,
  644.                                         TAG_DONE);
  645.  
  646.                                         if(PhoneList)
  647.                                         {
  648.                                             DeletePhoneList(PhoneList);
  649.  
  650.                                             PhoneList = NULL;
  651.                                         }
  652.  
  653.                                         if(NewPhoneEntry())
  654.                                         {
  655.                                             if(PhoneList = CreatePhoneList())
  656.                                             {
  657.                                                 LONG Tmp = Selected;
  658.  
  659.                                                 Selected = NumPhoneEntries - 1;
  660.  
  661.                                                 CopyMem(Phonebook[Tmp] -> Name,Phonebook[Selected] -> Name,sizeof(struct PhoneEntry) - (sizeof(struct PhoneNode) + sizeof(LONG)));
  662.  
  663.                                                 SPrintf(Phonebook[Selected] -> Node -> LocalName,"      %s",Phonebook[Selected] -> Name);
  664.  
  665.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  666.                                                     GTLV_Labels,    PhoneList,
  667.                                                     GTLV_Selected,    Selected,
  668.                                                 TAG_DONE);
  669.  
  670.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  671.                                                     GTST_String,    Phonebook[Selected] -> Name,
  672.                                                 TAG_DONE);
  673.  
  674.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  675.                                                     GTST_String,    Phonebook[Selected] -> Number,
  676.                                                 TAG_DONE);
  677.                                             }
  678.                                             else
  679.                                                 goto ClearList;
  680.                                         }
  681.                                         else
  682.                                             goto ClearList;
  683.                                     }
  684.  
  685.                                     break;
  686.  
  687.                             case GAD_REMOVEENTRY:
  688.  
  689.                                     if(Selected != ~0)
  690.                                     {
  691.                                         if(Phonebook[Selected] == ChosenEntry)
  692.                                             MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT));
  693.                                         else
  694.                                         {
  695.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  696.                                                 GTLV_Labels,~0,
  697.                                             TAG_DONE);
  698.  
  699.                                             if(PhoneList)
  700.                                             {
  701.                                                 DeletePhoneList(PhoneList);
  702.  
  703.                                                 PhoneList = NULL;
  704.                                             }
  705.  
  706.                                             if(Phonebook[Selected] -> Count != -1)
  707.                                             {
  708.                                                 RemoveDialEntry(Selected);
  709.  
  710.                                                 if(!(--Count))
  711.                                                 {
  712.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  713.                                                         GA_Disabled,    TRUE,
  714.                                                     TAG_DONE);
  715.  
  716.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  717.                                                         GA_Disabled,    TRUE,
  718.                                                     TAG_DONE);
  719.                                                 }
  720.                                             }
  721.  
  722.                                             RemPhoneEntry(Selected);
  723.  
  724.                                             if(NumPhoneEntries > 0)
  725.                                             {
  726.                                                 if(PhoneList = CreatePhoneList())
  727.                                                 {
  728.                                                     if(Selected == NumPhoneEntries)
  729.                                                         Selected--;
  730.  
  731.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  732.                                                         GTLV_Labels,    PhoneList,
  733.                                                         GTLV_Selected,    Selected,
  734.                                                     TAG_DONE);
  735.  
  736.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  737.                                                         GTST_String,    Phonebook[Selected] -> Name,
  738.                                                     TAG_DONE);
  739.  
  740.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  741.                                                         GTST_String,    Phonebook[Selected] -> Number,
  742.                                                     TAG_DONE);
  743.                                                 }
  744.                                                 else
  745.                                                     goto ClearList;
  746.  
  747.                                                 if(NumPhoneEntries == 1)
  748.                                                 {
  749.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  750.                                                         GA_Disabled,    TRUE,
  751.                                                     TAG_DONE);
  752.                                                 }
  753.                                             }
  754.                                             else
  755.                                             {
  756. ClearList:                                            GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  757.                                                     GTLV_Labels,    &EmptyList,
  758.                                                 TAG_DONE);
  759.  
  760.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  761.                                                     GTST_String,    "",
  762.                                                     GA_Disabled,    TRUE,
  763.                                                 TAG_DONE);
  764.  
  765.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  766.                                                     GTST_String,    "",
  767.                                                     GA_Disabled,    TRUE,
  768.                                                 TAG_DONE);
  769.  
  770.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  771.                                                     GA_Disabled,    TRUE,
  772.                                                 TAG_DONE);
  773.  
  774.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  775.                                                     GA_Disabled,    TRUE,
  776.                                                 TAG_DONE);
  777.  
  778.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  779.                                                     GA_Disabled,    TRUE,
  780.                                                 TAG_DONE);
  781.  
  782.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  783.                                                     GA_Disabled,    TRUE,
  784.                                                 TAG_DONE);
  785.  
  786.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  787.                                                     GA_Disabled,    TRUE,
  788.                                                 TAG_DONE);
  789.  
  790.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  791.                                                     GA_Disabled,    TRUE,
  792.                                                 TAG_DONE);
  793.  
  794.                                                 ActiveGadget = NULL;
  795.  
  796.                                                 Selected    = ~0;
  797.                                                 HitItem        = -1;
  798.                                             }
  799.                                         }
  800.                                     }
  801.  
  802.                                     break;
  803.  
  804.                             case GAD_NAME:
  805.  
  806.                                     if(Selected != ~0)
  807.                                     {
  808.                                         strcpy(Phonebook[Selected] -> Name,GT_STRING(GadgetArray[GAD_NAME]));
  809.  
  810.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  811.                                             GTLV_Labels,~0,
  812.                                         TAG_DONE);
  813.  
  814.                                         if(PhoneList)
  815.                                             DeletePhoneList(PhoneList);
  816.  
  817.                                         if(PhoneList = CreatePhoneList())
  818.                                         {
  819.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  820.                                                 GTLV_Labels,    PhoneList,
  821.                                                 GTLV_Selected,    Selected,
  822.                                             TAG_DONE);
  823.                                         }
  824.                                     }
  825.  
  826.                                     break;
  827.  
  828.                             case GAD_PHONENUMBER:
  829.  
  830.                                     if(Selected != ~0)
  831.                                         strcpy(Phonebook[Selected] -> Number,GT_STRING(GadgetArray[GAD_PHONENUMBER]));
  832.  
  833.                                     break;
  834.  
  835.                             case GAD_LOADLIST:
  836.  
  837.                                     BlockWindow(PanelWindow);
  838.  
  839.                                     if(ChosenEntry)
  840.                                         MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_LOAD_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT));
  841.                                     else
  842.                                     {
  843.                                         strcpy(DummyBuffer,LastPhone);
  844.  
  845.                                         DummyChar = PathPart(DummyBuffer);
  846.  
  847.                                         *DummyChar = 0;
  848.  
  849.                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_LOAD_PHONEBOOK_TXT),DummyBuffer,FilePart(LastPhone),DummyBuffer,"term#?",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_LOAD_TXT)))
  850.                                         {
  851.                                             if(PhoneList)
  852.                                                 DeletePhoneList(PhoneList);
  853.  
  854.                                             PhoneList = NULL;
  855.  
  856.                                             if(!LoadPhonebook(DummyBuffer))
  857.                                                 MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_COULD_NOT_LOAD_PHONEBOOK_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  858.  
  859.                                             if(PhoneList = CreatePhoneList())
  860.                                             {
  861.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  862.                                                     GTLV_Labels,    PhoneList,
  863.                                                 TAG_DONE);
  864.  
  865.                                                 FreeDialList();
  866.                                             }
  867.  
  868.                                             Count = 0;
  869.  
  870.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  871.                                                 GTST_String,    "",
  872.                                                 GA_Disabled,    TRUE,
  873.                                             TAG_DONE);
  874.  
  875.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  876.                                                 GTST_String,    "",
  877.                                                 GA_Disabled,    TRUE,
  878.                                             TAG_DONE);
  879.  
  880.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  881.                                                 GA_Disabled,    TRUE,
  882.                                             TAG_DONE);
  883.  
  884.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  885.                                                 GA_Disabled,    TRUE,
  886.                                             TAG_DONE);
  887.  
  888.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  889.                                                 GA_Disabled,    TRUE,
  890.                                             TAG_DONE);
  891.  
  892.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  893.                                                 GA_Disabled,    TRUE,
  894.                                             TAG_DONE);
  895.  
  896.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  897.                                                 GA_Disabled,    TRUE,
  898.                                             TAG_DONE);
  899.  
  900.                                             ActiveGadget = NULL;
  901.  
  902.                                             if(PhoneList)
  903.                                             {
  904.                                                 if(!PhoneList -> lh_Head -> ln_Succ)
  905.                                                 {
  906.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  907.                                                         GA_Disabled,    TRUE,
  908.                                                     TAG_DONE);
  909.  
  910.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  911.                                                         GA_Disabled,    TRUE,
  912.                                                     TAG_DONE);
  913.  
  914.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  915.                                                         GA_Disabled,    TRUE,
  916.                                                     TAG_DONE);
  917.                                                 }
  918.                                                 else
  919.                                                 {
  920.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  921.                                                         GA_Disabled,    FALSE,
  922.                                                     TAG_DONE);
  923.  
  924.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  925.                                                         GA_Disabled,    FALSE,
  926.                                                     TAG_DONE);
  927.  
  928.                                                     if(PhoneList -> lh_Head -> ln_Succ -> ln_Succ)
  929.                                                     {
  930.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  931.                                                             GA_Disabled,    FALSE,
  932.                                                         TAG_DONE);
  933.                                                     }
  934.                                                     else
  935.                                                     {
  936.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  937.                                                             GA_Disabled,    TRUE,
  938.                                                         TAG_DONE);
  939.                                                     }
  940.                                                 }
  941.                                             }
  942.  
  943.                                             Selected    = ~0;
  944.                                             HitItem        = -1;
  945.  
  946.                                             FreeAslRequest(FileRequest);
  947.                                         }
  948.                                     }
  949.  
  950.                                     ReleaseWindow(PanelWindow);
  951.  
  952.                                     break;
  953.  
  954.                             case GAD_SORTLIST:
  955.  
  956.                                     if(NumPhoneEntries > 1)
  957.                                     {
  958.                                         BlockWindow(PanelWindow);
  959.  
  960.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  961.                                             GTLV_Labels,    ~0,
  962.                                         TAG_DONE);
  963.  
  964.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  965.                                             GTST_String,    "",
  966.                                             GA_Disabled,    TRUE,
  967.                                         TAG_DONE);
  968.  
  969.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  970.                                             GTST_String,    "",
  971.                                             GA_Disabled,    TRUE,
  972.                                         TAG_DONE);
  973.  
  974.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  975.                                             GA_Disabled,    TRUE,
  976.                                         TAG_DONE);
  977.  
  978.                                         GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  979.                                             GA_Disabled,    TRUE,
  980.                                         TAG_DONE);
  981.  
  982.                                         GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  983.                                             GA_Disabled,    TRUE,
  984.                                         TAG_DONE);
  985.  
  986.                                         ActiveGadget = NULL;
  987.  
  988.                                         if(PhoneList)
  989.                                             DeletePhoneList(PhoneList);
  990.  
  991.                                         SortPhoneEntries();
  992.  
  993.                                         if(PhoneList = CreatePhoneList())
  994.                                         {
  995.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  996.                                                 GTLV_Labels,    PhoneList,
  997.                                                 GTLV_Selected,    ~0,
  998.                                             TAG_DONE);
  999.                                         }
  1000.  
  1001.                                         Selected    = ~0;
  1002.                                         HitItem        = -1;
  1003.  
  1004.                                         ReleaseWindow(PanelWindow);
  1005.                                     }
  1006.  
  1007.                                     break;
  1008.  
  1009.                             case GAD_SAVELIST:
  1010.  
  1011.                                     if(NumPhoneEntries)
  1012.                                     {
  1013.                                         strcpy(DummyBuffer,LastPhone);
  1014.  
  1015.                                         DummyChar = PathPart(DummyBuffer);
  1016.  
  1017.                                         *DummyChar = 0;
  1018.  
  1019.                                         BlockWindow(PanelWindow);
  1020.  
  1021.                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SAVE_PHONEBOOK_TXT),DummyBuffer,FilePart(LastPhone),DummyBuffer,"term#?",TRUE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SAVE_TXT)))
  1022.                                         {
  1023.                                             if(!SavePhonebook(DummyBuffer))
  1024.                                                 MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_COULD_NOT_CREATE_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  1025.  
  1026.                                             FreeAslRequest(FileRequest);
  1027.                                         }
  1028.  
  1029.                                         ReleaseWindow(PanelWindow);
  1030.                                     }
  1031.  
  1032.                                     break;
  1033.  
  1034.                             case GAD_PASSWORD:
  1035.  
  1036.                                     BlockWindow(PanelWindow);
  1037.  
  1038.                                     {
  1039.                                         struct Gadget *OldActiveGadget = ActiveGadget;
  1040.  
  1041.                                         memset(SharedBuffer,0,20);
  1042.  
  1043.                                         PhonePasswordUsed = FALSE;
  1044.  
  1045.                                         if(xpr_gets(LocaleString(MSG_PHONEPANEL_PLEASE_ENTER_PASSWORD_TXT),SharedBuffer))
  1046.                                         {
  1047.                                             if(SharedBuffer[0])
  1048.                                             {
  1049.                                                 SharedBuffer[20] = 0;
  1050.  
  1051.                                                 Encrypt(SharedBuffer,20,PhonePassword,SharedBuffer,strlen(SharedBuffer),TRUE);
  1052.  
  1053.                                                 PhonePasswordUsed = TRUE;
  1054.                                             }
  1055.                                         }
  1056.  
  1057.                                         ActiveGadget = OldActiveGadget;
  1058.                                     }
  1059.  
  1060.                                     ReleaseWindow(PanelWindow);
  1061.                                     break;
  1062.  
  1063.                             case GAD_EDIT:
  1064.  
  1065.                                     if(Selected != ~0)
  1066.                                     {
  1067.                                         BlockWindow(PanelWindow);
  1068.  
  1069.                                         switch(Code)
  1070.                                         {
  1071.                                             case EDIT_SERIAL:    SerialPanel(&Phonebook[Selected] -> Config);
  1072.                                                         break;
  1073.  
  1074.                                             case EDIT_MODEM:    ModemPanel(&Phonebook[Selected] -> Config);
  1075.                                                         break;
  1076.  
  1077.                                             case EDIT_TRANSFER:    strcpy(DummyBuffer,LastXprLibrary);
  1078.  
  1079.                                                         if(SelectProtocol(Phonebook[Selected] -> Config . Protocol,PanelWindow))
  1080.                                                             strcpy(Phonebook[Selected] -> Config . Protocol,LastXprLibrary);
  1081.  
  1082.                                                         strcpy(LastXprLibrary,DummyBuffer);
  1083.                                                         break;
  1084.  
  1085.                                             case EDIT_SCREEN:    ScreenPanel(&Phonebook[Selected] -> Config);
  1086.                                                         break;
  1087.  
  1088.                                             case EDIT_TERMINAL:    TerminalPanel(&Phonebook[Selected] -> Config);
  1089.                                                         break;
  1090.  
  1091.                                             case EDIT_COMMANDS:    CommandPanel(&Phonebook[Selected] -> Config);
  1092.                                                         break;
  1093.  
  1094.                                             case EDIT_MISC:        MiscPanel(&Phonebook[Selected] -> Config);
  1095.                                                         break;
  1096.  
  1097.                                             case EDIT_PATHS:    PathPanel(&Phonebook[Selected] -> Config);
  1098.                                                         break;
  1099.  
  1100.                                             case EDIT_UNITS:    if(Phonebook[Selected] == ChosenEntry)
  1101.                                                             MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_EDIT_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  1102.                                                         else
  1103.                                                         {
  1104.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  1105.                                                                 GTLV_Labels,    ~0,
  1106.                                                             TAG_DONE);
  1107.  
  1108.                                                             RatePanel(PhoneList,Phonebook[Selected]);
  1109.  
  1110.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  1111.                                                                 GTLV_Labels,    PhoneList,
  1112.                                                                 GTLV_Selected,    Selected,
  1113.                                                             TAG_DONE);
  1114.                                                         }
  1115.  
  1116.                                                         break;
  1117.  
  1118.                                             case EDIT_KEYMACROS:    strcpy(DummyBuffer,Phonebook[Selected] -> Config . MacroFile);
  1119.  
  1120.                                                         DummyChar = PathPart(DummyBuffer);
  1121.  
  1122.                                                         *DummyChar = 0;
  1123.  
  1124.                                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_KEYBOARD_MACROS_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config . MacroFile),DummyBuffer,"term#?",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  1125.                                                         {
  1126.                                                             strcpy(Phonebook[Selected] -> Config . MacroFile,DummyBuffer);
  1127.  
  1128.                                                             FreeAslRequest(FileRequest);
  1129.                                                         }
  1130.  
  1131.                                                         break;
  1132.  
  1133.                                             case EDIT_FASTMACROS:    strcpy(DummyBuffer,Phonebook[Selected] -> Config . FastMacroFile);
  1134.  
  1135.                                                         DummyChar = PathPart(DummyBuffer);
  1136.  
  1137.                                                         *DummyChar = 0;
  1138.  
  1139.                                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_FAST_MACROS_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config . FastMacroFile),DummyBuffer,"term#?",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  1140.                                                         {
  1141.                                                             strcpy(Phonebook[Selected] -> Config . FastMacroFile,DummyBuffer);
  1142.  
  1143.                                                             FreeAslRequest(FileRequest);
  1144.                                                         }
  1145.  
  1146.                                                         break;
  1147.  
  1148.                                             case EDIT_PASSWORD:    PasswordUserPanel(Phonebook[Selected]);
  1149.  
  1150.                                                         break;
  1151.  
  1152.                                             case EDIT_COPY:        CopyPanel(&Phonebook[Selected] -> Config);
  1153.  
  1154.                                                         break;
  1155.                                         }
  1156.  
  1157.                                         ActiveGadget = GadgetArray[GAD_NAME];
  1158.  
  1159.                                         ReleaseWindow(PanelWindow);
  1160.                                     }
  1161.                                     else
  1162.                                     {
  1163.                                         if(Code == EDIT_COPY)
  1164.                                         {
  1165.                                             BlockWindow(PanelWindow);
  1166.  
  1167.                                             CopyPanel(NULL);
  1168.  
  1169.                                             if(!GT_DISABLED(GadgetArray[GAD_NAME]))
  1170.                                                 ActiveGadget = GadgetArray[GAD_NAME];
  1171.                                             else
  1172.                                                 ActiveGadget = NULL;
  1173.  
  1174.                                             ReleaseWindow(PanelWindow);
  1175.                                         }
  1176.                                     }
  1177.  
  1178.                                     break;
  1179.  
  1180.                             case GAD_DIALLIST:
  1181.  
  1182.                                     if(Count)
  1183.                                     {
  1184.                                         FreeDialList();
  1185.  
  1186.                                         TempNode = (struct PhoneNode *)PhoneList -> lh_Head;
  1187.  
  1188.                                         while(TempNode -> VanillaNode . ln_Succ)
  1189.                                         {
  1190.                                             if(TempNode -> Entry -> Count != -1)
  1191.                                                 SortToList(TempNode);
  1192.  
  1193.                                             TempNode = (struct PhoneNode *)TempNode -> VanillaNode . ln_Succ;
  1194.                                         }
  1195.  
  1196.                                         Terminated = TRUE;
  1197.                                     }
  1198.  
  1199.                                     break;
  1200.  
  1201.                             default:    break;
  1202.                         }
  1203.                     }
  1204.                 }
  1205.             }
  1206.  
  1207.             DeleteTone();
  1208.  
  1209.             if(PhoneList)
  1210.                 DeletePhoneList(PhoneList);
  1211.  
  1212.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  1213.  
  1214.             PopWindow();
  1215.  
  1216.             OffsetX = PanelWindow -> LeftEdge;
  1217.             OffsetY = PanelWindow -> TopEdge;
  1218.  
  1219.             CloseWindow(PanelWindow);
  1220.         }
  1221.     }
  1222.  
  1223.     FreeGadgets(GadgetList);
  1224.  
  1225.     if(DialList)
  1226.         return(TRUE);
  1227.     else
  1228.         return(FALSE);
  1229. }
  1230.